home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / win31 / macsyma.arj / MACSDEMO.EXE / FUNCTION.OUT < prev    next >
Text File  |  1993-09-15  |  5KB  |  110 lines

  1.  
  2. (c1) /* 
  3.            DEMONSTRATION OF USER-DEFINED FUNCTIONS IN MACSYMA
  4.  
  5.     1. Defining and evaluating user-defined functions */
  6. f(x):= x^2+y;
  7. |$label(0,15,Times New Roman,$(d1$))f$paren(x)$hinge()$in( := )$sup(x,2)$in( + )y
  8.  
  9. (c2) f(2);
  10. |$label(0,15,Times New Roman,$(d2$))y$hinge()$in( + )4
  11.  
  12. (c3) ev(f(2),y:7);
  13. |$label(0,15,Times New Roman,$(d3$))11
  14.  
  15. (c4) f(x):= sin(x)^2+1;
  16. |$label(0,15,Times New Roman,$(d4$))f$paren(x)$hinge()$in( := )$sup(sin,2)$paren(x)$in( + )1
  17.  
  18. (c5) f(x+1);
  19. |$label(0,15,Times New Roman,$(d5$))$sup(sin,2)$paren(x$in( + )1)$hinge()$in( + )1
  20.  
  21. (c6) g(y,z):= f(z)+3*y;
  22. |$label(0,15,Times New Roman,$(d6$))g$paren(y$ina($, )$hinge()z)$hinge()$in( := )f$paren(z)$in( + )3$in( )y
  23.  
  24. (c7) ev(g(2*y+z,-0.5),y:7);
  25. |$label(0,15,Times New Roman,$(d7$))3$in( )$paren(z$in( + )14,$(,$))$hinge()$in( + )1.22985
  26.  
  27. (c8) h(n):= sum(i*x^i,i,0,n);
  28. |$label(0,15,Times New Roman,$(d8$))h$paren(n)$hinge()$in( := )sum$paren(i$in( )$sup(x,i)$ina($, )$hinge()i$ina($, )$hinge()0$ina($, )$hinge()n)
  29.  
  30. (c9) /* Define a function from an expression. */
  31. expr: sin(x+a)*(y-b)^2;
  32. |$label(0,15,Times New Roman,$(d9$))sin$paren(x$in( + )a)$hinge()$in( )$sup($paren(y$in( - )b,$(,$)),2)
  33.  
  34. (c10) myfun: funmake(lambda,[[x,y], expr]);
  35. |$label(0,15,Times New Roman,$(d10$))$greektext(l)$paren($paren(x$ina($, )$hinge()y,[,])$ina($, )$hinge()sin$paren(x$in( + )a)$in( )$sup($paren(y$in( - )b,$(,$)),2))
  36.  
  37. (c11) myfun(3,z);
  38. |$label(0,15,Times New Roman,$(d11$))sin$paren(a$in( + )3)$hinge()$in( )$sup($paren(z$in( - )b,$(,$)),2)
  39.  
  40. (c12) /* 2. Obtain a list of all user-defined functions in the environment. */
  41. functions;
  42. |$label(0,15,Times New Roman,$(d12$))$open([)f$paren(x)$ina($, )$hinge()g$paren(y$ina($, )$hinge()z)$ina($, )$hinge()h$paren(n)$close(])
  43.  
  44. (c13) /* Subscripted functions and recursion relations */
  45. t[n](x):= ratexpand(2*x*t[n-1](x)-t[n-2](x));
  46. |$label(0,15,Times New Roman,$(d13$))$sub(t,n)$paren(x)$hinge()$in( := )ratexpand$paren(2$in( )x$in( )$sub(t,n- 1)$paren(x)$in( - )$sub(t,n- 2)$paren(x))
  47.  
  48. (c14) t[0](x):= 1$
  49.  
  50. (c15) t[1](x):= x$
  51.  
  52. (c16) t[4](y);
  53. |$label(0,15,Times New Roman,$(d16$))8$in( )$sup(y,4)$hinge()$in( - )8$in( )$sup(y,2)$hinge()$in( + )1
  54.  
  55. (c17) /* 3. Subscripted functions versus functions of two arguments:
  56.     subscripted functions store all final or intermediate computed
  57.     values. Also, note the difference in evaluation of arguments. */
  58. g[n](x):= sum(ev(x),i,n,n+2);
  59. |$label(0,15,Times New Roman,$(d17$))$sub(g,n)$paren(x)$hinge()$in( := )sum$paren(ev$paren(x)$ina($, )$hinge()i$ina($, )$hinge()n$ina($, )$hinge()n$in( + )2)
  60.  
  61. (c18) h(n,x):= sum(ev(x),i,n,n+2);
  62. |$label(0,15,Times New Roman,$(d18$))h$paren(n$ina($, )$hinge()x)$hinge()$in( := )sum$paren(ev$paren(x)$ina($, )$hinge()i$ina($, )$hinge()n$ina($, )$hinge()n$in( + )2)
  63.  
  64. (c19) g[2](i^2);
  65. |$label(0,15,Times New Roman,$(d19$))3$hinge()$in( )$sup(i,2)
  66.  
  67. (c20) h(2,i^2);
  68. |$label(0,15,Times New Roman,$(d20$))29
  69.  
  70. (c21) /* The function G(Y,Z) is still defined from an earlier command,
  71.     even after defining the array function G[N](X) . */
  72. g(2,3);
  73. |$label(0,15,Times New Roman,$(d21$))$sup(sin,2)$paren(3)$hinge()$in( + )7
  74.  
  75. (c22) /* The array function P[N](X) evaluates the derivative before
  76.     evaluating the argument X; the function Q(N,X) does it the other way. */
  77. p[n](x):= ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n));
  78. |$label(0,15,Times New Roman,$(d22$))$sub(p,n)$paren(x)$hinge()$in( := )ratsimp$paren($q(diff$paren($sup($paren($sup(x,2)$in( - )1,$(,$)),n)$ina($, )$hinge()x$ina($, )$hinge()n),$sup(2,n)$in( )n!))
  79.  
  80. (c23) q(n,x):= ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n));
  81. |$label(0,15,Times New Roman,$(d23$))q$paren(n$ina($, )$hinge()x)$hinge()$in( := )ratsimp$paren($q(diff$paren($sup($paren($sup(x,2)$in( - )1,$(,$)),n)$ina($, )$hinge()x$ina($, )$hinge()n),$sup(2,n)$in( )n!))
  82.  
  83. (c24) p[2];
  84. C:\MACSD2B\library1\binoml.fas being loaded.
  85. |$label(0,15,Times New Roman,$(d24$))$greektext(l)$paren($paren(x,[,])$ina($, )$hinge()$q(3$in( )$sup(x,2)$in( - )1,2))
  86.  
  87. (c25) p[2](y+1);
  88. |$label(0,15,Times New Roman,$(d25$))$q(3$in( )$sup($paren(y$in( + )1,$(,$)),2)$in( - )1,2)
  89.  
  90. (c26) errcatch(q(2,y+1));
  91. |$label(-1,15,Times New Roman,)y$in( + )1
  92. Non-variable 2nd argument to DIFF:
  93. |$label(-1,15,Times New Roman,)y$in( + )1
  94. |$label(0,15,Times New Roman,$(d26$))$open([)$close(])
  95.  
  96. (c27) p[2](5);
  97. |$label(0,15,Times New Roman,$(d27$))37
  98.  
  99. (c28) f[i,j](x,y):= x^i+y^j;
  100. |$label(0,15,Times New Roman,$(d28$))$sub(f,i$ina($, )$hinge()j)$paren(x$ina($, )$hinge()y)$hinge()$in( := )$sup(x,i)$in( + )$sup(y,j)
  101.  
  102. (c29) g(fun,a,b):= print(fun," applied to ",a," and ",b," is ",fun(a,b))$
  103.  
  104. (c30) g(f[2,1],sin(%pi),2*c);
  105. |$label(-1,15,Times New Roman,)$greektext(l)$paren($paren(x$ina($, )$hinge()y,[,])$ina($, )$hinge()y$in( + )$sup(x,2))$in() $in() applied to $in() $in()0$in() $in() and $in() $in()2$in( )c$in() $in() is $in() $in()2$in( )c
  106. |$label(0,15,Times New Roman,$(d30$))2$hinge()$in( )c
  107.  
  108. (c31) /* Clean up */
  109. remove([f,g,h,myfun,q], function, [f,g,p,t], array,[expr,myfun],value)$
  110.